﻿using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace LinkyPOS.Class
{
    class mysqlserver
    {
        // masraflar ile ilgili degiskenler
        public string subekodu { get; set; }
        public int subemasrafID { get; set; }
        public string masraftipi { get; set; }
        public string aciklama { get; set; }
        public decimal deger { get; set; }
        public string tarih { get; set; }
        // /////////////////////////
        // sistem bilgileri
        public string hardisk { get; set; }

        // kasa bilgileri

        public int parcasayisi { get; set; }
        public int musterisayisi { get; set; }
        public decimal gunlukciro { get; set; }
        public decimal gunluknakit { get; set; }
        public decimal gunlukvisa { get; set; }
        public decimal eskinakit { get; set; }
        public decimal eskivisa { get; set; }
        public decimal gunlukcari { get; set; }
        public decimal toplmacari { get; set; }
        public decimal gunlukmasraf { get; set; }
    
        // siparis bilgileri

        public string sipariskodu { get; set; }
        public int musteriID { get; set; }
        public string iptaltarihi { get; set; }
        public string toplamnet { get; set; }
        public string referans { get; set; }


        public void anlikkasayaz()
        {
            try
            {



         
         // 15 dakkika aralar ile calisicak olan timer kasa kayit islemi yapacak mutlaka ayri bir thread mekanizmasinda calisacak 
         // gunluk masraflar ve  diger rapor tipleri  sunucuya excel formatinda upload edilecek bunun icin ftp kulanilacak 
            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("insert into anlikkasa (subekodu,tarihsaat,parcasayisi,musterisayisi,gunlukciro,gunluknakit,gunlukvisa,eskinakit,eskivisa,gunlukcari,toplamcari,gunlukmasraf) values(@subekodu,@tarihsaat,@parcasayisi,@musterisayisi,@gunlukciro,@gunluknakit,@gunlukvisa,@eskinakit,@eskivisa,@gunlukcari,@toplamcari,@gunlukmasraf)", sqlcon);
            sqlcmd.Parameters.AddWithValue("@subekodu",subekodu);
            sqlcmd.Parameters.AddWithValue("@parcasayisi",parcasayisi);
            sqlcmd.Parameters.AddWithValue("@musterisayisi",musterisayisi);
            sqlcmd.Parameters.AddWithValue("@gunlukciro",gunlukciro);
            sqlcmd.Parameters.AddWithValue("@gunluknakit",gunluknakit);
            sqlcmd.Parameters.AddWithValue("@gunlukvisa",gunlukvisa);
            sqlcmd.Parameters.AddWithValue("@eskinakit",eskinakit);
            sqlcmd.Parameters.AddWithValue("@gunlukcari",gunlukcari);
            sqlcmd.Parameters.AddWithValue("@toplamcari",toplmacari);
            sqlcmd.Parameters.AddWithValue("@gunlukmasraf",gunlukmasraf);
            sqlcmd.Parameters.AddWithValue("@tarihsaat",tarih);
            sqlcon.Open();


            sqlcmd.ExecuteNonQuery();
            sqlcon.Close();

            }
            catch (Exception)
            {

                // burada dunun kasasi uzak sunucuya eklenemedi demek
                // bu durunda eklenemeyen gun database kaydolmali ki daha sonra raporlardan cekilsin;
                // 


            }

        }

        public void masraflari_guncelle()
        { 
        // masraflar eklensede  silinsede database de gorunucek sadece aktif ve pasif olarak isaretlenicek. pasif olanlar hesaa katilmayacak ancak admin tarafindan gorulecek
        // 
            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("update masrafler set isaktive=0 where subekodu=@subekodu and subemasrafID=@subemasrafID",sqlcon);
            sqlcmd.Parameters.AddWithValue("@subekodu",subekodu);
            sqlcmd.Parameters.AddWithValue("@subemasrafID",subemasrafID);
            sqlcon.Open();

            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();











        }

        public void netkasaraporu()
        {

            try
            {
                MySqlConnection sqlcon = connection.maybag;
                MySqlCommand sqlcmd = new MySqlCommand("insert into kasaraporu (subekodu,tarihsaat,parcasayisi,musterisayisi,gunlukciro,gunluknakit,gunlukvisa,eskinakit,eskivisa,gunlukcari,toplamcari,gunlukmasraf) values(@subekodu,@tarihsaat,@parcasayisi,@musterisayisi,@gunlukciro,@gunluknakit,@gunlukvisa,@eskinakit,@eskivisa,@gunlukcari,@toplamcari,@gunlukmasraf)", sqlcon);
                sqlcmd.Parameters.AddWithValue("@subekodu", subekodu);
                sqlcmd.Parameters.AddWithValue("@parcasayisi", parcasayisi);
                sqlcmd.Parameters.AddWithValue("@musterisayisi", musterisayisi);
                sqlcmd.Parameters.AddWithValue("@gunlukciro", gunlukciro);
                sqlcmd.Parameters.AddWithValue("@gunluknakit", gunluknakit);
                sqlcmd.Parameters.AddWithValue("@gunlukvisa", gunlukvisa);
                sqlcmd.Parameters.AddWithValue("@eskinakit", eskinakit);
                sqlcmd.Parameters.AddWithValue("@gunlukcari", gunlukcari);
                sqlcmd.Parameters.AddWithValue("@toplamcari", toplmacari);
                sqlcmd.Parameters.AddWithValue("@gunlukmasraf", gunlukmasraf);
                sqlcmd.Parameters.AddWithValue("@tarihsaat", tarih);
                sqlcon.Open();
                sqlcmd.ExecuteNonQuery();
                sqlcon.Close();
            }
            catch (Exception)
            {

                TimeSpan ts = new TimeSpan(1, 0, 0, 0);
                DateTime dt = new DateTime().Subtract(ts);
                                

                SqlConnection sqlcon = connection.baglanti;
                SqlCommand sqlcmd = new SqlCommand("insert into hataligun (tarih) values (@tarih)",sqlcon);
                sqlcmd.Parameters.AddWithValue("@tarih",dt.ToString());
                sqlcon.Open();

                sqlcmd.ExecuteNonQuery();
                   
                sqlcon.Close();
             
            }

        
        }

        public bool masraf_ekle()
        {
            bool durum = false;
            try
            {

            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("insert into masraflar (subekodu,subemasrafID,masraftipi,aciklama,deger,tarih,isaktive) values (@subekodu,@subemasrafID,@masraftipi,@aciklama,@deger,@tarih,@isaktive)", sqlcon);
            sqlcmd.Parameters.AddWithValue("@subekodu",subekodu);
            sqlcmd.Parameters.AddWithValue("@subemasrafID",subemasrafID);
            sqlcmd.Parameters.AddWithValue("@masraftipi",masraftipi);
            sqlcmd.Parameters.AddWithValue("@aciklama",aciklama);
            sqlcmd.Parameters.AddWithValue("@deger",deger);
            sqlcmd.Parameters.AddWithValue("@tarih",tarih);
            sqlcmd.Parameters.AddWithValue("@isaktive", 1);

            sqlcon.Open();
            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();

            durum = true;
            return durum;
            }
            catch (Exception ex)
            {
                err2 err = new err2(ex.ToString(), "masraflar");
                durum = false;
                return durum;
            }

        
        }


        public void iptallr()
        {

            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("insert into iptaller (subekodu,sipariskodu,musteriID,iptalsaati,toplamnet ) values(@subekodu,@sipariskodu,@musteriID,@iptalsaati,@toplamnet) ", sqlcon);
            sqlcmd.Parameters.AddWithValue("@subekodu",subekodu);
            sqlcmd.Parameters.AddWithValue("@sipariskodu",sipariskodu);
            sqlcmd.Parameters.AddWithValue("@musteriID",musteriID);
            sqlcmd.Parameters.AddWithValue("@iptalsaati",iptaltarihi);
            sqlcmd.Parameters.AddWithValue("@toplamnet",toplamnet);


            
            sqlcon.Open();

            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();
        
        
        
        }

        public void referansli_iskontolar()
        {

            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("insert into referanslisiparisler (subekodu,sipariskodu,musteriadi,musteritelefonu,iskontoorani,toplambrut,toplamnet,referans ) values(@subekodu,@sipariskodu,@musteriadi,@musteritelefonu,@referansorani,@toplambrut,@toplamnet,@referans) ", sqlcon);
            sqlcmd.Parameters.AddWithValue("@subekodu", subekodu);
            sqlcmd.Parameters.AddWithValue("@sipariskodu", sipariskodu);
            sqlcmd.Parameters.AddWithValue("@musteriadi", musteriID);
            sqlcmd.Parameters.AddWithValue("@musteritelefonu", iptaltarihi);
            sqlcmd.Parameters.AddWithValue("@toplamner", toplamnet);
            sqlcmd.Parameters.AddWithValue("@iptalsaati", iptaltarihi);
            sqlcmd.Parameters.AddWithValue("@toplamnet", toplamnet);
            sqlcmd.Parameters.AddWithValue("@referans", referans);

            sqlcon.Open();

            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();
        }


        public void aksyonlar()
        { 
          // tu iptal edilen islemlr buradan genel database listelenecek
          // 


        }

        public void kurumsalmusteriler()
        {
        
          
        
        }

        public void sistemtanit()
        {
         // kendi sistem idsini mysqle yazdirip burada web kullanicisi eslemeyi sa[liyor olacagiz
         // her gun basinda bunu yapicak
         // ilk acilista sisteme magza adi ile onaylatma yaacak boylece data kontrolude yapilabilir
            MySqlConnection sqlcon = connection.maybag;
            MySqlCommand sqlcmd = new MySqlCommand("update into terminals where hardiskno=@harddisk",sqlcon); // burada prosedure calismali
            sqlcmd.Parameters.AddWithValue("@harddisk",hardisk);
            sqlcon.Open();
            sqlcmd.ExecuteNonQuery();
            sqlcon.Close();

        }






    }
}
